const express = require('express')
const app = express()
var cookieParser = require('cookie-parser')

// 设置ejs模板引擎
app.set('view engine','ejs');

// 托管静态资源
// 内置中间件
app.use(express.static('static'))
 
// 应用级中间件(用于权限判断)
app.use((req, res, next) => {
  console.log(new Date())
  next()
})

// 引用第三方中间件cookie-parser
app.use(cookieParser());

app.get('/', function (req, res) {

  // 设置cookie信息，写入到浏览器中
  /* 
  Option: {
    maxAge(number): 过期时间
    signed(boolean): 是否加密
    expires(Date): 具体的过期日期
    httpOnly(boolean): 只能在后台访问
    path(string): 设置cookie访问的路由
    domain(string): 多个域名cookie共享，但只能是二级域名之间共享
    secure(boolean): 
    encode(val: string => string):
    sameSite(boolean | 'lax' | 'strict' | 'none' ):
  }
   */
  res.cookie('username', "jsthin", {
    maxAge: 1000**60, // 设置过期时间一小时，关闭浏览器不会销毁
    path: "product"
  })
})

  const info = {
    name: "jsthin",
    age: 27
  }
  const flag = true;
  const list = [
    {name: "jsthin"},
    {name: "dell"},
    {name: "lee"}
  ]
  res.render("index", {
    title: "ejs模板隐藏参数",
    info,
    flag,
    list
  })
})

// post请求
app.post('/dologin', function (req, res) {
  res.send('执行登录')
})

// get传值
app.get('/product', function (req, res) {

  // 获取cookie信息
  console.log(req.cookies)

  let query = req.query // 获取get传值
  res.send('get传值' + query.id)
})


// 路由级中间件
app.get('/news/add', function (req, res, next) {
  // res.send("/news/add")
  next()
})
app.get('/news/:id', function (req, res) {
  res.send('动态路由')
})


// 错误处理中间件
app.use((req, res, next) => {
  res.status(404).send("页面不见了。。")
})
 

app.listen(3000, () => {
  console.log('app is running...')
})